package config;

import interceptor.Myintercepotor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;

@Configuration  //该注解代表该类是一个配置类，交给Spring容器管理
@ComponentScan("controller") //组件扫面，项目启动时会扫描到controller包
@EnableWebMvc
public class SpringMVCConfig implements WebMvcConfigurer {
    /**
     *注册拦截器组件，并完成拦截路径设置
     *
     */

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new Myintercepotor()).addPathPatterns("/home/index.do").excludePathPatterns(



        );
    }

    /**
     * 配置视图解析器Bean组件，将组件交给spring容器管理
     */


    @Bean
    public ThymeleafViewResolver viewResolver(){
        //ClassLoaderTemplateResolver加载模板页面
        ClassLoaderTemplateResolver cltr=new ClassLoaderTemplateResolver();
        //给模板设置前缀（页面的路径）
        cltr.setPrefix("/templates/");
        //给模板页面设置后缀（页面的类型）
        cltr.setSuffix(".html");
        //模板类型
        cltr.setTemplateMode(TemplateMode.HTML);
        //设置模板编码
        cltr.setCharacterEncoding("UTF-8");
        //开启模板缓存功能（建议测试十七关掉，正式上线开启）
        cltr.setCacheable(true);
        //创建模板引擎对象
        SpringTemplateEngine ste=new SpringTemplateEngine();
        ste.setTemplateResolver(cltr);
        //开启spring信息源
        ste.setEnableSpringELCompiler(true);
        //创建模板解析器
        ThymeleafViewResolver tvr=new ThymeleafViewResolver();
        tvr.setTemplateEngine(ste);
        tvr.setCharacterEncoding("utf-8");

        System.out.println("thymeleaf模板初始化成功");
        return tvr;


    }



}
